package com.chainzouzou.Java_Programming_A;

import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

    }
    public static void FnTest2(){
        /*Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();
        Object[] a = new Object[n];
        for (int i = 0; i < n; i++) {
            String b = sc.next();
            char s = b.charAt(0);
            if(s == 'c'){
                //a[i] = new Computer();
                System.out.println("你好胖");
            }else if(s == 'd'){
                double t = sc.nextDouble();
                a[i] = t;
            }else if(s == 'i'){
                Integer t = sc.nextInt();
                a[i] = t;
            }else if(s == 's'){
                String t = sc.next();
                a[i] = t;
            }else{
                a[i] = null;
            }
        }
        for (int i = n-1; i >= 0 ; i--) {
            if(a[i] == null){
                continue;
            }
            System.out.println(a[i]);
        }*/
    }
    public static void FnTest1(){
        /*public String toString() {
            return super.toString()+"-"+company.toString()+"-"+salary;
        }*/
    }
    public static void FnTest3(){
        //equal覆盖的一般过程：1.先比较两个类的引用是否一致（==） 2.在判断传入的类是不是null（==）
        // 3.接下来判断传入的类是不是当前类的类型，是的话就转型后开始对类的内容进行逐一比较（equals()）

        /*默认的equals函数的第一个比较：都要最先比较当前类和传入的类的引用是不是相同，就相当于是比较身份证，如果身份证号相同，
        直接默认这是同一个人。
        接着几乎也是一个惯用的比较：需要先判断传入的类是否为空，若传入的类为空则直接返回false。
        题目的要求有三个需要比较的类型：
        首先是要比较父类的属性是否都相等，于是我们就用super调用父类的equals函数，直接比较两个类的父类。
        然后是要比较company，并且要考虑company为空的情况，而company还分为本类的company，传入类的company，
        一共要讨论4种情况，
        其中，最首先是两者同时为null的情况，就默认这两者相同，直接返回浮点数的比较结果，要注意的是，
        当有一方为null的时候，我们就不能通过调用它的equals函数来判断是否相等了，否则会报错应直接用==；
        接下来是两者中有一个为null的情况，都直接返回false；
        再接着是两者都不为空的情况，那就调用equals函数来比较两个company是否相等。
        最后是要对浮点数进行比较，就按照题目的提示预先设置好浮点数的格式后，再按设定好的格式调用equals函数来比较即可。
        */
        /*public boolean equals(Object obj) {
            //直接比较引用的地址码是否相同
            if (this == obj) return true;
            //判断传入的参数是否为null
            if (obj == null) return false;
            //判断父类的属性是否相同
            if (!super.equals(obj)) return false;
            //浮点数的比较和company为null的情况的辨析
            DecimalFormat df = new DecimalFormat("#.##");
            Employee other = (Employee) obj;
            //company属性对象equals返回true，且其salary也相等。
            if (company == null && other.company == null)
                return df.format(salary).equals(df.format(other.salary));
            else if (company == null || other.company == null) return false;
            return company.equals(other.company)
                    && df.format(salary).equals(df.format(other.salary));
        }*/

    }
    class CarDriver {

           /* private String name;
            public CarDriver() {}
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            @Override
            public String toString() {
                return "CarDriver [name=" + name + "]";
            }

        }
        class Car implements Cloneable{
            //都是引用数据类型 得考虑深拷贝
            private String name;
            private CarDriver driver;
            private int[] scores;
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public CarDriver getDriver() {
                return driver;
            }
            public void setDriver(CarDriver driver) {
                this.driver = driver;
            }
            public int[] getScores() {
                return scores;
            }
            public void setScores(int[] scores) {
                this.scores = scores;
            }
            public Car() {
            }
            @Override
            public String toString() {
                return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
            }
            @Override
            public Car clone() throws CloneNotSupportedException {
                Car car=new Car();
                CarDriver cd=new CarDriver();
                String nm;
                int []t;
                if(this.driver==null) {
                    cd=null;
                }else {
                    cd.setName(driver.getName());
                }
                car.setDriver(cd);
                if(this.name==null) {
                    nm=null;
                }else {
                    nm=name;
                }
                car.setName(nm);
                if(scores==null) {
                    car.setScores(null);
                }else {
                    t= Arrays.copyOf(scores, scores.length);
                    car.setScores(t);
                }
                return car;
            }
        }*/

    }

    }
